Search


📜 [專欄新文章] Solidity Weekly #17
✍️ mingd...

  • Share this:


📜 [專欄新文章] Solidity Weekly #17
✍️ mingderwang
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium

token special issue

ERC827 的資安問題探討

警告: ERC827 規格還在討論中, 且已經發現容易造成資安問題. 本文僅供技術探討參考, 請勿 prod 使用! (若錯誤使用造成任何損失, 個人與專欄皆無法負擔賠償責任)

Why ERC827 can make you vulnerable to reentrancy attacks — and how to prevent them

上面連結文章, 介紹 ERC827 寫法不對, 有可能造成 Reentrancy 攻擊.

ERC827 是一種 ERC20 的擴充, 它是希望 ERC20 介面以外, 再增加 approveAndCall(), transferAndCall(), 以及transferFromAndCall()三種介面. 讓該合約在呼叫相對應 ERC20 的 approve(), transfer() 或 transferFrom() 功能之後, 能順便再呼叫 _to 參數的另一個合約地址 with _data 參數. 以 transferAndCall 為例, 定義如下: (截圖來自 ERC827 規格)

規格裡已經強調不可以搭配 fallback functions 使用, 所以使用時要替別注記!!!

ltdr: 為何 ERC827 有問題, 我還要介紹呢? 因為它讓不用 Ether 也能交易變成可能 (在這篇文章裡有介紹 Do not pay transaction fees in Ethereum), 裡面的 Feeless (警告: 沒有 reentery 保護, 有資安問題, 勿用), 就是使用了 ERC827 協定, 但 Save on fees, lose your tokens (ChainSecurity 的 CTO, https://medium.com/@HRitzdorf) 就馬上給他打臉.

雖然有問題, 但 OpenZeppelin 還是有 implement, 且加上嚴重警告, 希望它能繼續改良, 用大眾的力量來解決這個問題. 也讓 ERC20 能更 powerful, 且更為廣泛使用.

後記:

由於內容挑選不易, 造成出刊頻率不一, 雖然叫 “Solidity Weekly” 週刊, 但偶而會變成 bi-weekly, 深感抱歉. 我知道台灣非常多人在寫 Smart Contracts, 使用 Solidity 或寫 DApps 經驗都比我豐富, 希望大家能共同編輯 “Solidity Weekly”. 讓出刊頻率能像 blockchain 一樣(每個 block 挖到的平均速度是 14秒), 我們平均每一個禮拜一期. 只要是跟 Smart Contract 相關, 都歡迎加入”Taipei Ethereum Meetup” 編輯群, 我們可以自由加 Solidity Weekly #{issue++}. 我們沒有主編, 不必審核 (只內容要不要太離譜就好). (期待, 有人自告奮勇寫下一 期的 Solidity Weekly #18)

BTW, 我們的 Taipei Ethereum Meetup 專欄文章, 雖然以中文為主, 但已經發現有外國文章(The Best Way to Start Coding in Solidity) refer 到我們的文章, https://medium.com/…/ethereum-dapp-tutorial-push-button-cae… , 非常難得, 深感欣慰. 大家的努力, 世界都在看!

Solidity Weekly #17 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.

👏 歡迎轉載分享鼓掌


Tags:

About author
not provided
We have regular meeting twice per month on discussing blockchain technology, smart contracts and DApps development! We would love to have you join us!
View all posts